package com.ryan.encrypttool.business.auth.message;

import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import javax.websocket.CloseReason;
import javax.websocket.OnClose;
import javax.websocket.OnOpen;
import javax.websocket.Session;

import org.springframework.stereotype.Component;

/**
 * @author Administrator
 */
@Component
public class WebSocketSessionManager {

    private final Map<String, Session> connectedSessions;

    public WebSocketSessionManager() {
        // 这里假设你有一个全局的地方保存所有的Session
        // 在实际应用中，你可能需要自定义实现或者借助Spring容器的特性来管理会话
        this.connectedSessions = new ConcurrentHashMap<>();
    }

    // 添加会话到集合
    public void addSession(Session session) {
        connectedSessions.put(session.getId(), session);
    }

    // 移除会话
    public void removeSession(Session session) {
        connectedSessions.remove(session.getId());
    }

    // 获取所有会话
    public Collection<Session> getAllSessions() {
        return connectedSessions.values();
    }

    // 在WebSocket的OnOpen方法中添加会话
    @OnOpen
    public void onOpen(Session session) {
        addSession(session);
        // 可能还会有其他初始化逻辑
    }

    // 在WebSocket的OnClose方法中移除会话
    @OnClose
    public void onClose(Session session, CloseReason closeReason) {
        removeSession(session);
        // 清理相关资源
    }
}